// 此文件用于封装登录的请求 api

// 导入 axios 请求
import service from '@/utils/request'

// 导入个人信息的接口返回规范
import type { userInfoModole } from '@/stores/userInfo'

// 定义请求地址
// 枚举
enum userApi {
  login = '/admin/acl/index/login',
  info = '/admin/acl/index/info',
  logout = '/admin/acl/index/logout'
}
// 定义登录请求体的参数规范
export interface Request {
  username: string
  password: string
}
// 定义响应体data (token)
interface token {
  token: string
}
// 定义返回值响应体接口规范
export interface tokenDate {
  code: number
  data: token
  message: string
  success: boolean
}

// 定义个人信息的响应体接口规范
// 继承于data的各项接口
interface userInfoDate {
  code: number
  data: userInfoModole
}
// 登录接口的api
/**
 * @desc 登录请求的api
 * @param userInfo 登录信息
 * @returns Promise
 */
export const loginOnce = (userInfo: Request) => {
  // 地址
  return service.post<any, tokenDate>(userApi.login, userInfo)
}

/**
 * @desc 获取用户信息 api
 * @returns Promise
 */
export const info = () => {
  return service.get<any, userInfoDate>(userApi.info)
}

/**
 * @desc 退出登录 api
 * @returns Promsie
 */
export const logout = () => {
  return service.post<any, null>(userApi.logout)
}
